package models

import (
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/joho/godotenv/autoload"
	"mz_water/entity"
	myjwt "mz_water/middleware"
	"mz_water/util"
	"time"
)

type Login struct {
	Id    string `json:"id"`
	Name  string `json:"name"`
	Phone string `json:"phone"`
	Pwd   string `json:"pwd"`
	Type  int    `json:"type"`
	Token string `json:"token"`
}

func JwLogin(app *entity.APPSECRET) *entity.Result {
	var res = &entity.Result{}
	qur := &User{Id: app.Openid}
	err := util.GetDb().First(qur).Error
	// 判断此用户有没有使用过小程序
	if gorm.IsRecordNotFoundError(err) {
		//res.SetCode(200)
		//res.SetMessage("查询不到数据")
		//res.SetData(err)
		//return res
	} else if err != nil {
		//如果err不等于record not found错误，又不等于nil，那说明sql执行失败了。
		fmt.Println("查询失败", err)
		res.SetCode(201)
		res.SetMessage("查询失败")
		res.SetData(qur)
		return res
	}
	//app.Openid
	// 模拟查询登录成功
	return res
	//return generateToken(l)
}

// 生成令牌
func generateToken(user *Login) *entity.Result {
	var res = &entity.Result{}
	j := &myjwt.JWT{
		[]byte("newtrekWang"),
	}
	claims := myjwt.CustomClaims{
		Id:    user.Id,
		Name:  user.Name,
		Phone: user.Pwd,
	}
	claims.Issuer = "newtrekWang"
	claims.NotBefore = int64(time.Now().Unix() - 1000)
	claims.ExpiresAt = int64(time.Now().Unix() + 3600)
	token, err := j.CreateToken(claims)
	if err != nil {
		res.SetData(err)
		res.SetCode(201)
		res.SetMessage("登录失败")
		return res
	}
	user.Token = token
	res.SetData(user)
	res.SetCode(200)
	res.SetMessage("登录成功")
	return res
}
